<template>
  <div class="custom-form">
    <el-row :gutter="15">
      <el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px"
        :key="showFormKey">
        <el-col :span="24">
          <el-form-item label-width="0" prop="field103414f">
            <h2 align='center' style="color:undefined;font-size: nullpx;text-align: center">预算审批</h2>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('current_user_id')" v-show="false">
          <el-form-item :label="$t('当前用户')" prop="current_user_id">
            <avue-information-body :operationVal="operationVal" infoType='user'
              :whetherToRebindSecondaryEditing='false' v-model="formData['current_user_id']"
              placeholder="当前用户" :disabled="hasDisabledPermission('current_user_id',true)"
              :readonly="!hasEditPermission('current_user_id',true)" :style="{width: '100%'}">
            </avue-information-body>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('job')" v-show="false">
          <el-form-item :label="$t('职级名称')" prop="job">
            <el-input v-model="formData['job']" placeholder="请输入职级名称"
              :disabled="hasDisabledPermission('job',false)"
              :readonly="!hasEditPermission('job',false)" clearable :style="{width: '100%'}"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('role_id')" v-show="false">
          <el-form-item :label="$t('角色ID')" prop="role_id">
            <el-input v-model="formData['role_id']" placeholder="请输入角色ID"
              :disabled="hasDisabledPermission('role_id',false)"
              :readonly="!hasEditPermission('role_id',false)" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('role_name')" v-show="false">
          <el-form-item :label="$t('角色名称')" prop="role_name">
            <el-input v-model="formData['role_name']" placeholder="请输入角色名称"
              :disabled="hasDisabledPermission('role_name',false)"
              :readonly="!hasEditPermission('role_name',false)" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('user_id')" v-show="false">
          <el-form-item :label="$t('申请人ID')" prop="user_id">
            <el-input v-model="formData['user_id']" placeholder="请输入申请人ID"
              :disabled="hasDisabledPermission('user_id',false)"
              :readonly="!hasEditPermission('user_id',false)" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('user_name')">
          <el-form-item :label="$t('申请人名称')" prop="user_name">
            <el-input v-model="formData['user_name']" placeholder="请输入申请人名称"
              :disabled="hasDisabledPermission('user_name',false)"
              :readonly="true" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('apply_time')" v-show="false">
          <el-form-item :label="$t('申请时间')" prop="apply_time">
            <avue-information-body :operationVal="operationVal" infoType='date'
              :whetherToRebindSecondaryEditing='false' v-model="formData['apply_time']" placeholder="当前时间"
              :disabled="hasDisabledPermission('apply_time',true)"
              :readonly="!hasEditPermission('apply_time',true)" :style="{width: '100%'}">
            </avue-information-body>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('area')" v-show="false">
          <el-form-item :label="$t('地区')" prop="area">
            <el-input v-model="formData['area']" placeholder="请输入地区"
              :disabled="hasDisabledPermission('area',false)"
              :readonly="!hasEditPermission('area',false)" clearable :style="{width: '100%'}"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('depart_short_name')" v-show="false">
          <el-form-item :label="$t('部门简称')" prop="depart_short_name">
            <el-input v-model="formData['depart_short_name']" placeholder="请输入部门简称"
              :disabled="hasDisabledPermission('depart_short_name',false)"
              :readonly="!hasEditPermission('depart_short_name',false)" clearable
              :style="{width: '100%'}"></el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('depart_id')">
          <el-form-item :label="$t('部门')" prop="depart_id">
            <el-select v-model="formData['depart_id']" placeholder="请选择部门id"
              :disabled="hasDisabledPermission('depart_id',false)" filterable clearable
              @change="Handleselect"
              :style="{width: '100%'}">
              <el-option v-for="(item, index) in depart_idOptions" :key="index" :label="item.F_ShortName"
                :value="item.F_DepartmentId" :disabled="item.disabled"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('is_effective')" v-show="false">
          <el-form-item :label="$t('是否生效')" prop="is_effective">
            <el-input v-model="formData['is_effective']" placeholder="请输入是否生效"
              :disabled="hasDisabledPermission('is_effective',false)"
              :readonly="!hasEditPermission('is_effective',false)" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('set_project_department')">
          <el-form-item :label="$t('立项部门')" prop="set_project_department">
            <el-select v-model="formData['set_project_department']" placeholder="请选择立项部门"
              :disabled="hasDisabledPermission('set_project_department',false)" filterable clearable
              :style="{width: '100%'}">
              <el-option v-for="(item, index) in set_project_departmentOptions" :key="index"
                :label="item.F_ItemName" :value="item.F_ItemValue" :disabled="item.disabled"></el-option>
            </el-select>
          </el-form-item>
        </el-col>
        <!-- 立项申请 -->
        <el-col :span="24" v-if="hasFormPermission('set_project_ids')">
          <el-form-item :label="$t('立项申请')" prop="set_project_ids">
            <el-input v-model="formData['set_project_ids']" placeholder="请输入立项申请"
              :disabled="hasDisabledPermission('set_project_ids',false)"
              @focus="handleSetProject"
              :readonly="!hasEditPermission('set_project_ids',false)" clearable :style="{width: '100%'}">
            </el-input>
          </el-form-item>
        </el-col>

        <!-- 关联立项申请 -->
        <el-col :span="24" v-show="dataVal.startUser">
          <el-form-item label="">
          <!-- processing、refuse、adopt -->
            <div class="del_items">
              <div class="del-items-left"><img src="../../../assets/card/file.png"></div>
              <div class="del-items-middle">{{dataVal.startUser}}提交的{{dataVal.schemeName}}</div>
              <div class="del-items-refuse" v-if="dataVal.status==0">审批拒绝</div>
              <div class="del-items-adopt" v-else-if="dataVal.status==1">审批通过</div>
              <div class="del-items-processing" v-else>审批中</div>
              <div class="del-items-close" @click="del"><img src="../../../assets/card/close.png"></div>
            </div>
          </el-form-item>
        </el-col>

        <el-col :span="24" v-if="hasFormPermission('budget_file')">
          <el-form-item :label="$t('预算文件')" prop="budget_file">
            <xjr-custom-upload :config="budget_fileConfig"
              :disabled="hasDisabledPermission('budget_file',false)" v-model="formData['budget_file']"
              list-type="text"></xjr-custom-upload>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('budget_total_amount')">
          <el-form-item :label="$t('预算总金额')" prop="budget_total_amount">
            <el-input v-model="formData['budget_total_amount']" type="number" placeholder="请输入预算总金额"
              :disabled="hasDisabledPermission('budget_total_amount',false)"
              :readonly="!hasEditPermission('budget_total_amount',false)" clearable
              :style="{width: '100%'}">
              <template slot="append">元</template>
            </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="24">
          <el-form-item :label="$t('大写')" v-show="formData['budget_total_amount'] > 0">
           <div style="color:#0063f5;">{{convertCurrency(formData['budget_total_amount'])}}</div>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasFormPermission('other_file')">
          <el-form-item :label="$t('其他文件')" prop="other_file">
            <xjr-custom-upload :config="other_fileConfig"
              :disabled="hasDisabledPermission('other_file',false)" v-model="formData['other_file']"
              list-type="text"></xjr-custom-upload>
          </el-form-item>
        </el-col>
        <el-col :span="24">
          <el-form-item label-width="0" prop="field11881af">
            <div style="border-top: 1px solid #dcdfe6;margin-top: 0px;margin-bottom: 0px;"></div>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="hasWorkFlowFormPermission('field1197192')" v-show="optionsFlag">
          <el-form-item :label="$t('意见簿')" prop="field1197192">
            <xjr-opinion-comonent :value="formData.field1197192"></xjr-opinion-comonent>
          </el-form-item>
        </el-col>
        <el-col :span="24" v-if="!isWorkflowForm">
          <el-form-item size="large" v-if="isEdit">
            <el-button type="primary" @click="submitForm" :loading="submitLoading">
              {{submitLoading?$t('workFlow.WFMenu.hintSubmit'):$t('submit')}}</el-button>
            <el-button @click="cancelForm">{{$t('cancelText')}}</el-button>
          </el-form-item>
        </el-col>
      </el-form>
    </el-row>
    <!-- 选择立项申请 -->
    <el-dialog
      title="选择立项申请"
      :visible.sync="setPeojectDialogVisible"
      width="800px"
      append-to-body
      :before-close="handleClose">
        <ContractpprovalVs @value="sendData">
        </ContractpprovalVs>
        <span slot="footer" class="dialog-footer">
          <el-button @click="setPeojectDialogVisible = false">取 消</el-button>
          <el-button type="primary" @click="sure">确 定</el-button>
        </span>
    </el-dialog>
  </div>
</template>
<script>

  import FilterableDataList from '@/components/generator/clientComponents/FilterableDataList.vue';
  import workflowFormAuthorize from "@/mixins/workflowFormAuthorize";
  import authorizeMixin from "@/mixins/authorize";
  import { baseUrl } from "@/config/env";
  import request from "@/router/axios";
  import {getUserDetailsById} from '@/api/user.js';
  import { log } from 'video.js';
  import ContractpprovalVs  from  '../components/contractApprovals.vue';

  export default {
    mixins: [authorizeMixin,workflowFormAuthorize],
    components: {ContractpprovalVs},
    props: ['keyValue', 'isEdit', 'disabled'],
  data() {
    let _this = this
    return {
      submitLoading: false,
      setPeojectDialogVisible:false,
      showForm: true,
      showFormKey: 1,
      reRenderSubform: false,
      operationVal: 'add',
      isAdd: true,
      addressUrl:'budget',
      mainTableName: 'oa_budget',
      formConfig: {},
      formData: {
        'field103414f': '',
        'current_user_id': '',
        'job': '',
        'role_id': '',
        'role_name': '',
        'user_id': '',
        'user_name': '',
        'apply_time': '',
        'area': '',
        'depart_short_name': '',
        'depart_id': '',
        'is_effective': "0",
        'set_project_department': '',
        'set_project_ids': '',
        'budget_file': null,
        'budget_total_amount': "",
        'other_file': null,
        'field11881af': '',
        'field1197192': null,
      },
      rules: {
        job: [{
          required: true,
          message: '请输入职级名称',
          trigger: 'blur'
        }],
        role_id: [{
          required: true,
          message: '请输入角色ID',
          trigger: 'blur'
        }],
        role_name: [{
          required: true,
          message: '请输入角色名称',
          trigger: 'blur'
        }],
        user_id: [{
          required: true,
          message: '请输入申请人ID',
          trigger: 'blur'
        }],
        user_name: [{
          required: true,
          message: '请输入申请人名称',
          trigger: 'blur'
        }],
        area: [{
          required: true,
          message: '请输入地区',
          trigger: 'blur'
        }],
        depart_short_name: [{
          required: true,
          message: '请输入部门简称',
          trigger: 'blur'
        }],
        depart_id: [{
          required: true,
          message: '请选择部门id',
          trigger: 'change'
        }],
        is_effective: [{
          required: true,
          message: '请输入是否生效',
          trigger: 'blur'
        }],
        set_project_department: [{
          required: true,
          message: '请选择立项部门',
          trigger: 'change'
        }],
        set_project_ids: [{
          required: true,
          message: '请输入立项申请',
          trigger: 'change'
        }],
        budget_file: [{
          required: true,
          message: '预算文件不能为空',
          trigger: 'change'
        }],
        budget_total_amount: [{
          required: true,
          message: '请输入预算总金额',
          trigger: 'blur'
        }],
        other_file: [{
          required: true,
          message: '其他文件不能为空',
          trigger: 'change'
        }],
      },
      depart_idOptions: [],
      roleData:[],
      set_project_departmentOptions: [],
      budget_fileConfig: {
        "showTip": false,
        "fileSize": 2,
        "sizeUnit": "MB",
        "buttonText": "点击上传",
        "disabled": false
      },
      other_fileConfig: {
        "showTip": false,
        "fileSize": 2,
        "sizeUnit": "MB",
        "buttonText": "点击上传",
        "disabled": false
      },
      tableData: [{
          date: '测试部1',
          name: '名称1',
          address: '通过'
        }, {
          date: '测试部2',
          name: '名称2',
          address: '通过'
        }, {
          date: '测试部3',
          name: '名称3',
          address: '拒绝'
        },
        {
          date: '测试部4',
          name: '名称4',
          address: '拒绝'
        },
        {
          date: '测试部5',
          name: '名称5',
          address: '拒绝'
        },
        {
          date: '测试部6',
          name: '名称6',
          address: '拒绝'
      }],
      multipleSelection: [],
      total:0,
      limit:1,
      size:10,
      dataVal:{}
    }
  },
  computed: {},
  watch: {
    'formData.budget_total_amount': function(val, oldVal) {
      this.changeFormConfigDefaultValue();
    },
  },
  created() {
    this.formConfig = this.getFormConfig();
  },
  async mounted() {
    //TODO 再这里做数据回填 请求表单数据
    if(this.keyValue){
        this.isAdd = false;
    }
    if(!this.isAdd&&this.keyValue){
        this.operationVal = 'edit';
        try {
          let res = await request({
            url: baseUrl + "/"+this.addressUrl+"/" + this.keyValue,
            method: "get",
          });
            
      this.formData = res.data.data
      
            this.showFormKey++;
        } catch (error) {
        }
    }
    if (typeof this.getSet_project_departmentOptions == "function") {
      await this.getSet_project_departmentOptions();
    }
    await this.getUserInfo()
    
    
  },
  methods: {
    handleSetProject(){
      this.setPeojectDialogVisible = true
    },
    handleClick(row) {
      console.log(row);
    },
    getUserInfo(){
        let params = {
          userId:this.formData['current_user_id']
        }
        getUserDetailsById(params).then(res => {
          if(res.data.success){
            this.formData['job'] = res.data.data.F_Job
            this.formData['area'] = res.data.data.F_Area
            this.formData['user_id'] = this.formData['current_user_id']
            this.formData['user_name'] = res.data.data.F_RealName
            this.depart_idOptions = res.data.data.F_Department
            this.roleData = res.data.data.F_Role
            this.initRole()
            this.initDepartmentData()
          }
        })
    },
        initDepartmentData(){
      if(this.depart_idOptions && this.depart_idOptions.length == 1){
        this.formData['depart_short_name'] = this.depart_idOptions[0].F_FullName
        this.formData['depart_id'] = this.depart_idOptions[0].F_DepartmentId
      }
    },
    Handleselect(){
      if(this.depart_idOptions && this.depart_idOptions.length > 0){
        this.depart_idOptions.forEach(e => {
          if(e.F_DepartmentId == this.formData['depart_id']){
            this.formData['depart_short_name'] = e.F_ShortName
          }
        })
      }
    },
    initRole(){
        let roleId = []
        let roleName = []
        if(this.roleData && this.roleData.length > 0){
          this.roleData.forEach(e => {
            roleId.push(e.F_RoleId)
            roleName.push(e.F_FullName)
          })
        }
        this.formData['role_id'] = roleId.join(',')
        this.formData['role_name'] = roleName.join(',')
    },
    convertCurrency(money) {
        //汉字的数字
        var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
        //基本单位
        var cnIntRadice = new Array('', '拾', '佰', '仟');
        //对应整数部分扩展单位
        var cnIntUnits = new Array('', '万', '亿', '兆');
        //对应小数部分单位
        var cnDecUnits = new Array('角', '分', '毫', '厘');
        //整数金额时后面跟的字符
        var cnInteger = '整';
        //整型完以后的单位
        var cnIntLast = '元';
        //最大处理的数字
        var maxNum = 999999999999999.9999;
        //金额整数部分
        var integerNum;
        //金额小数部分
        var decimalNum;
        //输出的中文金额字符串
        var chineseStr = '';
        //分离金额后用的数组，预定义
        var parts;
        // 传入的参数为空情况 
        if(money == '') return ''
        money = parseFloat(money)
        if(money >= maxNum) return ''
        // 传入的参数为0情况 
        if(money == 0) {
            chineseStr = cnNums[0] + cnIntLast + cnInteger;
            return chineseStr
        }
        // 转为字符串
        money = money.toString();
        // indexOf 检测某字符在字符串中首次出现的位置 返回索引值（从0 开始） -1 代表无
        if(money.indexOf('.') == -1){
            integerNum = money;
            decimalNum = ''
        }else{
            parts = money.split('.');
            integerNum = parts[0];
            decimalNum = parts[1].substr(0,4);
        }
        //转换整数部分
        if(parseInt(integerNum,10) > 0){
            let zeroCount  = 0;
            let IntLen = integerNum.length
            for(let i = 0; i < IntLen; i++){
                let n = integerNum.substr(i,1);
                let p = IntLen - i - 1;
                let q = p / 4;
                let m = p % 4;
                if( n == '0'){
                    zeroCount ++ ;
                }else{
                    if(zeroCount > 0){
                        chineseStr += cnNums[0]
                    }
                    zeroCount = 0;
                    chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
                }
                if(m == 0 && zeroCount < 4){
                    chineseStr += cnIntUnits[q]; 
                }
            }
            // 最后+ 元
            chineseStr += cnIntLast;
        }
        // 转换小数部分
        if(decimalNum != ''){
            let decLen = decimalNum.length;
            for(let i = 0; i <decLen; i++){
                let n = decimalNum.substr(i,1);
                if(n != '0'){
                    chineseStr += cnNums[Number(n)] + cnDecUnits[i]
                }
            }
        }
        if(chineseStr == ''){
            chineseStr += cnNums[0] + cnIntLast + cnInteger;
        }else if(decimalNum == ''){
            chineseStr += cnInteger;
        }
        return chineseStr
    },
    getFormData() {
      let key = this.mainTableName + 'Entity';
      let returnParams = {};
      returnParams[key] = this.formData;
      return {
        ...returnParams,
      };
    },
    validateForm() {
      this.$refs['elForm'].validate(valid => {});
    },
    async aysncValidateForm() {
      let validataArry = []
      validataArry.push(new Promise((resolve, reject) => {
        this.$refs['elForm'].validate(valid => {
          resolve(valid)
        })
      }))
      let res = await Promise.all(validataArry)
      if (res.includes(false)) {
        return false
      }
      else {
        return true;
      }
    },
    changeTableData() {},
    async submitForm() {
      this.submitLoading = true;
      let valid = await this.aysncValidateForm();
      if (valid == false) {
        this.submitLoading = false;
        return false;
      }
      this.changeTableData();
      //格式化数据
      let newObj = this.getFormData();
      
        //如果没有传入参数就是新增
        if (!this.keyValue) {

          request({
            url: baseUrl + "/"+this.addressUrl,
            method: "post",
            data : newObj
          }).then((res) => {
            this.submitLoading = false;
            this.$notify({
              title: "成功",
              message: "新增成功",
              type: "success",
            });
             this.$emit("onChange",true)
          });

        }
        else{

         request({
            url: baseUrl + "/"+this.addressUrl+"/" + this.keyValue,
            method: "put",
            data : newObj
          }).then((res) => {
            this.submitLoading = false;
            this.$notify({
              title: "成功",
              message: "修改成功",
              type: "success",
            });
             this.$emit("onChange",true)
          });

        }
       
       
      
    },
    cancelForm() {
      this.$emit("onChange", true)
    },
    formatTree(data, valueField, lableField, childField, type) {
      let tree = [];
      data.forEach((node, index) => {
        let newNode = {
          value: node[valueField],
          label: node[lableField],
        };
        if (type) {
          newNode.disabled = node[valueField] == undefined ? true : false
        }
        tree.push(newNode);
        if (node[childField] != null && node[childField].length > 0) {
          newNode.children = (this.formatTree(node[childField], valueField, lableField, childField,
          type));
        }
      }, this);
      return tree;
    },
    //辅助工作流 审批(编辑) 预留方法
    handleEdit() {
    },
    getNumberFixed2(number) {
      let splitNum = ("" + number).replace(/(^0*)/g, "").split(".");
      let num = splitNum[0] == "" ? '0' : splitNum[0];
      if (splitNum.length > 1) {
        num += '.';
        let roundNum = 2; //保留两位小数
        for (let i = 0; i < roundNum; i++) {
          num += splitNum[1][i];
        }
      }
      return parseFloat(num);
    },
    changeFormConfigDefaultValue() {
      let valueForFormIdMap = new Map();
      this.formConfig.fields.forEach((ele) => {
        if (ele.__config__.componentName == "table") {
          ele.__config__.children.forEach((element) => {
            valueForFormIdMap.set(ele.__config__.formId + "-table-" + element.__config__.formId,
              element.__config__.defaultValue);
          });
        }
        else if (ele.__config__.componentName && ele.__config__.componentName == 'avue-tabs') {
          let childrenObj = ele.__config__.childrenObj || {};
          let _arr = this.getValByTabs(childrenObj);
          _arr.map(item => {
            valueForFormIdMap.set(item.formId, item.defaultValue);
          });
        }
        else {
          valueForFormIdMap.set(ele.__config__.formId, this.formData[ele.__vModel__]);
        }
      });
      this.formConfig.fields.forEach((ele, index) => {
        if (ele.__config__.componentName == "table") {
          ele.__config__.children.forEach((element, childrenIndex) => {
            let defaultValue = 0;
            if (element.computationalConfiguration && element.computationalConfiguration.length > 0) {
              let formulaStr = "";
              element.computationalConfiguration.forEach((item) => {
                if (item.type == "taxRate") {
                  //税率
                  if (element.taxRate >= 0) {
                    formulaStr += element.taxRate * 0.01;
                  }
                }
                else {
                  let eleValue = valueForFormIdMap.get(item.formId) || 0;
                  formulaStr += item.formId == 0 ? item.name : eleValue;
                }
              });
              defaultValue = eval(formulaStr);
              defaultValue = this.getNumberFixed2(defaultValue);
              //大写
              if (element.isCapitalized) {
                this.formConfig.fields[index].__config__.children[childrenIndex].__config__
                  .capitalizedValue = this.getCapitalizedMethod(defaultValue);
              }
              this.formConfig.fields[index].__config__.children[childrenIndex].__config__
                .defaultValue = defaultValue;
              this.formData[element.__vModel__] = defaultValue;
            }
          });
        }
        else if (ele.__config__.componentName && ele.__config__.componentName == 'avue-tabs') {
          let childrenObj = ele.__config__.childrenObj || {};
          //avue-tabs
          this.calcDefaultValueByTabs(ele.__config__.childrenObj, valueForFormIdMap);
        }
        else {
          let defaultValue = 0;
          if (ele.computationalConfiguration && ele.computationalConfiguration.length > 0) {
            let formulaStr = "";
            ele.computationalConfiguration.forEach((item) => {
              if (item.type == "taxRate") {
                //税率
                if (ele.taxRate >= 0) {
                  formulaStr += ele.taxRate * 0.01;
                }
              }
              else {
                let eleValue = valueForFormIdMap.get(item.formId) || 0;
                formulaStr += item.formId == 0 ? item.name : eleValue;
              }
            });
            defaultValue = eval(formulaStr);
            defaultValue = this.getNumberFixed2(defaultValue);
            //大写
            if (ele.isCapitalized) {
              this.formConfig.fields[index].__config__.capitalizedValue = this.getCapitalizedMethod(
                defaultValue);
            }
            this.formConfig.fields[index].__config__.defaultValue = defaultValue;
            this.formData[ele.__vModel__] = defaultValue;
          }
        }
      });
    },
    getValByTabs(childrenObj) {
      let _arr = [];
      if (!childrenObj || !(childrenObj instanceof Object)) return [];
      for (let key in childrenObj) {
        let children = childrenObj[key];
        children.map(item => {
          if (item.__config__.componentName && item.__config__.componentName == 'avue-tabs') {
            let cObj = item.__config__.childrenObj || {};
            _arr.push(...this.getValByTabs(item.__config__.childrenObj));
          }
          else {
            let _obj = {};
            _obj.formId = item.__config__.formId;
            _obj.defaultValue = this.formData[item.__vModel__];
            _arr.push(_obj);
          }
        });
      }
      return (() => {
        return _arr;
      })()
    },
    calcDefaultValueByTabs(childrenObj, valueForFormIdMap) {
      if (!childrenObj || !(childrenObj instanceof Object)) return;
      for (let key in childrenObj) {
        let children = childrenObj[key];
        children.map(item => {
          if (item.__config__.componentName && item.__config__.componentName == 'avue-tabs') {
            let cObj = item.__config__.childrenObj || {};
            this.calcDefaultValueByTabs(cObj, valueForFormIdMap);
          }
          else {
            let defaultValue = 0;
            if (item.computationalConfiguration && item.computationalConfiguration.length > 0) {
              let formulaStr = "";
              item.computationalConfiguration.forEach((c) => {
                if (item.type == "taxRate") {
                  //税率
                  if (item.taxRate >= 0) {
                    formulaStr += item.taxRate * 0.01;
                  }
                }
                else {
                  let eleValue = valueForFormIdMap.get(c.formId) || 0;
                  formulaStr += c.formId == 0 ? c.name : eleValue;
                }
              });
              defaultValue = eval(formulaStr);
              defaultValue = this.getNumberFixed2(defaultValue);
              item.__config__.defaultValue = defaultValue;
              this.formData[item.__vModel__] = defaultValue;
            }
          }
        });
      }
    },
    async getSet_project_departmentOptions() {
      // 注意：this.$axios是通过Vue.prototype.$axios = axios挂载产生的
      try {
        let resp = await this.$axios({
          method: 'get',
          url:  baseUrl + '/data-items/lxbm/detail',
        });
        if (resp.data.data) {
          this.set_project_departmentOptions = resp.data.data;
        }
      }
      catch (error) {}
    },
    //子表单权限
    getAuthorityTableChildrenList(bindTable, children) {
      let column = [];
      if (bindTable && this.formEnCodeList && this.formEnCodeList[bindTable]) {
        let formSubEnCodeList = this.formEnCodeList[bindTable];
        if (children && children.length > 0) {
          column = children.map(ele2 => {
            if (formSubEnCodeList.includes(ele2.prop)) {
              ele2.hide = false;
            }
            else {
              ele2.hide = true;
            }
            if (ele2.hide == false) {
              //工作流中系统表单必填权限
              if (this.formSubTableNotRequiredList[bindTable] != undefined) {
                if (this.formSubTableNotRequiredList[bindTable].includes(ele2.prop)) {
                  ele2.required = false;
                }
                else {
                  ele2.required = true;
                }
              }
              ele2.rules = [];
              if (ele2.required) {
                ele2.rules = ele2.ruleList;
              }
              // disabled 属性
              if (this.formSubTableDisabledList[bindTable] != undefined) {
                if (this.formSubTableDisabledList[bindTable].includes(ele2.prop)) {
                  ele2.disabled = true;
                }
                else {
                  ele2.disabled = false;
                }
              }
            }
            return ele2;
          });
        }
        return column;
      }
      else {
        return children;
      }
    },
    getFormConfig() {
      let config = {
        "fields": [{
          "__vModel__": "field103414f",
          "__config__": {
            "label": "预算审批",
            "showLabel": false,
            "titleColor": null,
            "fontSize": null,
            "tag": "h2",
            "span": 24,
            "align": "top",
            "justify": "start",
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 103
          }
        }, {
          "__vModel__": "current_user_id",
          "__type__": "info",
          "infoType": "user",
          "__organize__": true,
          "__config__": {
            "label": "当前用户",
            "showLabel": true,
            "tag": "avue-information-body",
            "avueType": "information-body",
            "defaultValue": "316231f32f1f0e5a4c56bf855806b924",
            "required": false,
            "span": 24,
            "whetherToRebindSecondaryEditing": false,
            "bindTableField": "current_user_id",
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 104,
            "placeholder": "当前用户",
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "job",
          "__config__": {
            "label": "职级名称",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 106,
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableField": "job",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "role_id",
          "__config__": {
            "label": "角色ID",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 107,
            "fieldLength": 500,
            "bindTable": "oa_budget",
            "bindTableField": "role_id",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "role_name",
          "__config__": {
            "label": "角色名称",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 108,
            "fieldLength": 500,
            "bindTable": "oa_budget",
            "bindTableField": "role_name",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "user_id",
          "__config__": {
            "label": "申请人ID",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 109,
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableField": "user_id",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "user_name",
          "__config__": {
            "label": "申请人名称",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 110,
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableField": "user_name",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "apply_time",
          "__type__": "info",
          "infoType": "date",
          "__organize__": true,
          "__config__": {
            "label": "申请时间",
            "showLabel": true,
            "tag": "avue-information-body",
            "avueType": "information-body",
            "defaultValue": "2022-07-05 12:10:41",
            "required": false,
            "span": 24,
            "whetherToRebindSecondaryEditing": false,
            "bindTableField": "apply_time",
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 112,
            "placeholder": "当前时间",
            "fieldLength": "10",
            "bindTable": "oa_budget",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "area",
          "__config__": {
            "label": "地区",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 111,
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableField": "area",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "depart_short_name",
          "__config__": {
            "label": "部门简称",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 120,
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableField": "depart_short_name",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "depart_id",
          "__config__": {
            "label": "部门id",
            "showLabel": true,
            "tag": "el-select",
            "avueType": "select",
            "span": 24,
            "required": true,
            "saveField": "",
            "showField": "",
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 121,
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableField": "depart_id",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "is_effective",
          "__config__": {
            "label": "是否生效",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "defaultValue": "0",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 122,
            "fieldLength": "1",
            "bindTable": "oa_budget",
            "bindTableField": "is_effective",
            "bindTableFieldType": "int"
          }
        }, {
          "__vModel__": "set_project_department",
          "__config__": {
            "label": "立项部门",
            "showLabel": true,
            "tag": "el-select",
            "avueType": "select",
            "span": 24,
            "required": true,
            "saveField": "",
            "showField": "",
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 113,
            "dataType": "dataItem",
            "dataItem": "lxbm",
            "fieldLength": "100",
            "bindTable": "oa_budget",
            "bindTableField": "set_project_department",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "set_project_ids",
          "__config__": {
            "label": "立项申请",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input-tip",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 114,
            "fieldLength": "5000",
            "bindTable": "oa_budget",
            "bindTableField": "set_project_ids",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "budget_file",
          "__config__": {
            "label": "预算文件",
            "tag": "el-upload",
            "avueType": "upload",
            "defaultValue": null,
            "showLabel": true,
            "required": true,
            "span": 24,
            "showTip": false,
            "buttonText": "点击上传",
            "fileSize": 2,
            "sizeUnit": "MB",
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 115,
            "fieldLength": "200",
            "bindTable": "oa_budget",
            "bindTableField": "budget_file",
            "bindTableFieldType": "varchar"
          }
        }, {
          "tempType": "number",
          "__vModel__": "budget_total_amount",
          "computationalConfiguration": [],
          "append": "元",
          "__config__": {
            "label": "预算总金额",
            "showLabel": true,
            "tag": "el-input",
            "avueType": "input",
            "defaultValue": "",
            "required": true,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 116,
            "fieldLength": "50",
            "bindTable": "oa_budget",
            "bindTableField": "budget_total_amount",
            "bindTableFieldType": "double"
          }
        }, {
          "__vModel__": "other_file",
          "__config__": {
            "label": "其他文件",
            "tag": "el-upload",
            "avueType": "upload",
            "defaultValue": null,
            "showLabel": true,
            "required": true,
            "span": 24,
            "showTip": false,
            "buttonText": "点击上传",
            "fileSize": 2,
            "sizeUnit": "MB",
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 117,
            "fieldLength": "200",
            "bindTable": "oa_budget",
            "bindTableField": "other_file",
            "bindTableFieldType": "varchar"
          }
        }, {
          "__vModel__": "field11881af",
          "__config__": {
            "label": "分割线",
            "showLabel": false,
            "direction": "horizontal",
            "contentPosition": "",
            "tag": "el-divider",
            "top": 0,
            "bottom": 0,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 118
          }
        }, {
          "tempType": "textarea",
          "__vModel__": "field1197192",
          "__type__": "opinion",
          "__config__": {
            "label": "意见簿",
            "showLabel": true,
            "tag": "xjr-opinion-comonent",
            "defaultValue": null,
            "span": 24,
            "F_LgMarkCode": "",
            "prestrainField": "",
            "formId": 119
          }
        }]
      };
      return config;
    },
    sendData(val){
      this.formData['set_project_ids'] = val.processInstanceId
      this.dataVal = val
    },
    sure(){
      this.setPeojectDialogVisible = false
    },
    del(){
       this.formData['set_project_ids'] = ''
       this.dataVal = {}
    }
  }
}

</script>
<style>
.el-table__empty-block {
  width: 100% !important;
}

.avue-form__row {
  padding: 0 !important;
}

#editorphone {
  width: 375px;
  margin: 0 auto;
  border: 1px solid #E4E7ED;
  padding: 0 7.5px;
  background: #f5f6fa;
  height: 700px;
  overflow-y: auto;
  overflow-x: hidden;
  border-radius: 5px;
}

#editorphone .el-col {
  border-bottom: 1px solid #F2F2F2;
  background: #fff;
  margin-bottom: 0;
  padding: 0 15px 6px !important;
  width: 100%;
}

#editorphone .el-form-item__label {
  line-height: 20px
}

#editorphone .el-input-group .el-input__inner {
  background: #f5f6fa
}

#editorphone .el-input__inner {
  border: 0
}

#editorphone .el-input-group__append,
#editorphone .el-input-group__prepend {
  border: 0;
  background: #edeef2;
  color: #666;
}

#editorphone .el-input-group .el-input__prefix {
  left: 44px
}

#editorphone .el-input-group .el-input__suffix {
  right: 44px
}

#editorphone .el-form-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-flow: wrap;
}

#editorphone .el-form-item__label {
  float: none;
  min-width: 85px;
  width: auto !important;
  text-align: left;
  flex: auto;
}

#editorphone .tinymce .el-form-item__label {
  min-width: 100%;
}

#editorphone .el-form-item__content {
  margin-left: 0px !important;
  flex: auto;
  width: calc(100% - 95px);
}

#editorphone .avueFormNoLable .el-form-item__label,
#editorphone .avueFormNoLable .avue-crud__pagination {
  display: none;
}

#editorphone .avueFormNoLable .el-collapse-item__wrap,
#editorphone .avueFormNoLable .el-collapse {
  border-bottom: 0
}

#editorphone .avueFormNoLable .el-col {
  border-bottom: 0;
  padding-bottom: 0
}

#editorphone .el-form-item__content .el-button:first-child {
  margin-left: 90px;
}

.el-upload__tip {
  line-height: 1.2;
}
.el_input_keyword{
  margin: 8px 0;
  height: 40px;
}
.el_pagination_{
  text-align: center;
  margin: 16px 0;
}
</style>
<style scoped>

  .del_items{
    width: 350px;
    height: 32px;
    margin-top: 4px;
    background: rgb(246, 246, 246);
    border-radius: 4px;
    display: flex;
    flex-direction: row;

  }
  .del-items-left{
    width: 32px;
    height: 32px;
    text-align: center;
  }
  
  .del-items-left > img{
    width: 22px;
    height: 22px;
    margin-top: 5px;
  }
  .del-items-middle{
    width: 180px;
    height: 32px;
    font-size: 16px;
    font-weight: 400;
    text-align: left;
    line-height: 32px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;

  }
  
  .del-items-processing{
     width: 80px;
    font-size: 16px;
    font-weight: 400;
    text-align: center;
    line-height: 32px;
    color: #FE8B04;
  }
  .del-items-refuse{
     width: 80px;
    font-size: 16px;
    font-weight: 400;
    text-align: center;
    line-height: 32px;
    color: #FD513B;
  }
  .del-items-adopt{
     width: 80px;
    font-size: 16px;
    font-weight: 400;
    text-align: center;
    line-height: 32px;
    color: #10A300;
  }
  .del-items-right{
    width: 90px;
    height: 32px;
  }
  .del-items-close{
    width: 32px;
    height: 32px;
    margin-left: 24px;
  }
  .del-items-close:hover{
    cursor: pointer;
  }
  .del-items-close > img{
    width: 16px;
    height: 16px;
  }
  </style>
